package com.nanbei.future;

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

/**
 * @ClassDescription: lian
 * @JdkVersion: 1.8
 * @Author: libs
 * @Created: 2024/9/26 14:30
 */
public class CompletableFutureAPIDemo3 {
    public static void main(String[] args) {

        // thenRun 任务A执行完执行B，并且B不需要A的结果
        // thenApply 任务A执行完执行B，B需要A的结果，同时任务B有返回值
        // thenAccept 任务A执行完执行B，B需要A的结果，但是任务B无返回值


        System.out.println(
                CompletableFuture.supplyAsync(() -> 1)
                        .thenRun(() -> System.out.println("thenRun 任务执行时不需要上一步的结果")
                        ).join()
        );

        System.out.println("---------------------------------------");

        System.out.println(
                CompletableFuture.supplyAsync(() -> 1)
                        .thenApply(value ->{
                            System.out.println("thenApply 用到上一步的结果，并有返回值");
                            return value + 2;
                        }).join()
        );

        System.out.println("---------------------------------------");

        System.out.println(
                CompletableFuture.supplyAsync(() -> 1)
                        .thenAccept(value ->{
                            System.out.println("thenAccept 用到上一步的结果，但是返回值");
                        }).join()
        );
    }
}
